// pages/login/login.js
const { login } = require('../../api/auth')
const { showError, showSuccess } = require('../../utils/util')

const app = getApp()

Page({
  data: {
    loginForm: {
      username: '',
      password: ''
    },
    loading: false
  },

  onLoad() {
    console.log('登录页面加载')
    
    // 检查是否已登录
    if (app.globalData.isLogin) {
      this.redirectToMain()
    }
  },

  // 用户名输入
  onUsernameInput(e) {
    this.setData({
      'loginForm.username': e.detail.value
    })
  },

  // 密码输入
  onPasswordInput(e) {
    this.setData({
      'loginForm.password': e.detail.value
    })
  },

  // 表单验证
  validateForm() {
    const { username, password } = this.data.loginForm
    
    if (!username.trim()) {
      showError('请输入用户名')
      return false
    }
    
    if (username.length < 3 || username.length > 50) {
      showError('用户名长度在 3 到 50 个字符')
      return false
    }
    
    if (!password.trim()) {
      showError('请输入密码')
      return false
    }
    
    if (password.length < 6 || password.length > 20) {
      showError('密码长度在 6 到 20 个字符')
      return false
    }
    
    return true
  },

  // 处理登录
  async handleLogin() {
    try {
      // 表单验证
      if (!this.validateForm()) {
        return
      }
      
      this.setData({ loading: true })
      
      // 检查网络状态
      const isNetworkOk = await app.checkNetworkStatus()
      if (!isNetworkOk) {
        return
      }
      
      // 执行登录
      const response = await login(this.data.loginForm)
      
      // 保存登录信息
      app.saveLoginInfo(response.token, response.userInfo)
      
      showSuccess('登录成功')
      
      // 跳转到主页面
      this.redirectToMain()
      
    } catch (error) {
      console.error('登录失败:', error)
      showError(error.message || '登录失败，请检查用户名和密码')
    } finally {
      this.setData({ loading: false })
    }
  },

  // 跳转到主页面
  redirectToMain() {
    wx.switchTab({
      url: '/pages/dashboard/dashboard',
      fail: () => {
        wx.redirectTo({
          url: '/pages/dashboard/dashboard'
        })
      }
    })
  },

  // 快速填充测试账号
  onTapTips(e) {
    const { username, password } = e.currentTarget.dataset
    if (username && password) {
      this.setData({
        'loginForm.username': username,
        'loginForm.password': password
      })
    }
  }
})